﻿using System;
using System.Collections.Generic;
using System.Text;

namespace daSyntaxAnalyser
{
    // Безопасные объекты
    using daBase.Objects.Safe;

    /// <summary>
    /// Информация о токене
    /// </summary>
    public class TokenInfo
    {
        // Информация о токене
        private DelphiTokens token;
        private string text;
        private string file;
        private int line;
        private SafeDictionary<string, string> metatags;
        private List<string> dfmids;

        /// <summary>
        /// Токен
        /// </summary>
        public DelphiTokens Token { get { return token; } }

        /// <summary>
        /// Текст токена
        /// </summary>
        public string Text { get { return text; } }

        /// <summary>
        /// Файл, содержащий токен
        /// </summary>
        public string File { get { return file; } }

        /// <summary>
        /// Номер строки, содержащей токен
        /// </summary>
        public int Line { get { return line; } }

        /// <summary>
        /// Мета теги
        /// </summary>
        public SafeDictionary<string, string> MetaTags { get { return metatags; } set { metatags = value; } }

        /// <summary>
        /// Идентификаторы из дфм-файла
        /// </summary>
        public List<string> DfmIds { get { return dfmids; } set { dfmids = value; } }

        /// <summary>
        /// Параметризованный конструктор
        /// </summary>
        /// <param name="Token">токен</param>
        /// <param name="Text">текст токена</param>
        /// <param name="File">файл, содержащей токен</param>
        /// <param name="Line">номер строки, содержащей токен</param>
        /// <param name="MetaTags">мета теги</param>
        public TokenInfo(DelphiTokens Token, string Text, string File, int Line, SafeDictionary<string, string> MetaTags, List<string> DfmIds)
        {
            token = Token;
            text = Text;
            file = File;
            line = Line;
            metatags = MetaTags;
            dfmids = DfmIds;
        }

        /// <summary>
        /// Вывод токена как строки
        /// </summary>
        /// <returns>результат</returns>
        public override string ToString()
        {
            return text;
        }
    }
}
